/**
 * 动画类型信息
 */
import { AnimationMode } from '../../../types/tn-transition'

type AnimationType = {
  [k in AnimationMode]: string | number
}

type AnimationModeValue = {
  [k in AnimationMode]: string
}

/**
 * 根据类型获取不同的动画值
 * @param type 获取数据的类型
 * @returns 动画数据
 */
export const getAnimationType = (type: boolean): AnimationType => {
  return {
    fade: type ? 1 : 0,
    'slide-top': `translateY(${type ? '0' : '-100%'})`,
    'slide-right': `translateX(${type ? '0' : '100%'})`,
    'slide-bottom': `translateY(${type ? '0' : '100%'})`,
    'slide-left': `translateX(${type ? '0' : '-100%'})`,
    'zoom-in': `scaleX(${type ? 1 : 0.8}) scaleY(${type ? 1 : 0.8})`,
    'zoom-out': `scaleX(${type ? 1 : 1.2}) scaleY(${type ? 1 : 1.2})`
  }
}

/**
 * 根据动画类型获取实际执行动画的参数
 * @returns 实际动画执行的参数
 */
export const getAnimationMode = (): AnimationModeValue => {
  return {
    fade: 'opacity',
    'slide-top': 'translateY',
    'slide-right': 'translateX',
    'slide-bottom': 'translateY',
    'slide-left': 'translateX',
    'zoom-in': 'scale',
    'zoom-out': 'scale'
  }
}